// Copyright 2021 by 马万里. All rights reserved.
// 开发团队 ：   鸡中之霸
// 开发人员 ：   马万里
// 开发时间 ：   2021/2/25 12:34
// 文件名称 ：   userfile.go
// 工程名称 ：   netpan
// 开发工具 ：   GoLand
//

package db

import (
	"fmt"
	myDB "johnsonsmile.cn/netpan/db/mysql"
	"time"
)

// UserFile: 用户文件表结构
type UserFile struct {
	UserName    string
	FileHash    string
	FileName    string
	FileSize    int64
	UploadAt    string
	LastUpdated string
}

// OnUserFileUploadFinished: 记录到用户文件表
func OnUserFileUploadFinished(username, filehash, filename string, filesize int64) bool {
	stmt, err := myDB.DBConn().Prepare(
		"INSERT IGNORE INTO tbl_user_file(`user_name`, `file_sha1`, `file_name`, `file_size`, `upload_at`) VALUES (?,?,?,?,?)",
	)
	if err != nil {
		return false
	}
	defer stmt.Close()

	_, err = stmt.Exec(username, filehash, filename, filesize, time.Now())
	if err != nil {
		return false
	}
	return true
}

// 批量获取用户文件信息: QueryUserFileMetas
func QueryUserFileMetas(username string, limit int) ([]*UserFile, error) {
	stmt, err := myDB.DBConn().Prepare(
		"SELECT file_sha1,file_name,file_size,upload_at,last_update FROM tbl_user_file WHERE user_name=? LIMIT ?",
	)
	if err != nil {
		return nil, err
	}
	defer stmt.Close()
	rows, err := stmt.Query(username, limit)
	if err != nil {
		return nil, err
	}
	var userFiles []*UserFile
	for rows.Next() {
		ufile := new(UserFile)
		err := rows.Scan(&ufile.FileHash, &ufile.FileName, &ufile.FileSize, &ufile.UploadAt, &ufile.LastUpdated)
		if err != nil {
			fmt.Println(err.Error())
			break
		}
		userFiles = append(userFiles, ufile)
	}
	return userFiles, nil
}
